package com.example.takeaway.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.takeaway.model.bo.Order;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.takeaway.model.dto.ShopOrderPageQuery;
import com.example.takeaway.model.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 订单表 Mapper 接口
 * </p>
 *
 * @author 邢晨旭
 * @since 2023-10-12
 */
public interface OrderMapper extends BaseMapper<Order> {

    /**
     * 根据用户id和订单状态查询订单列表
     * @param userId 用户id
     * @param status 订单状态
     * @return
     */
    List<OrderListVO> queryOrderListByUserId(@Param("userId") Long userId, @Param("status") Integer status);

    /**
     * 根据店铺id和订单状态查询订单列表
     * @param page 分页信息
     * @param pageQuery 查询条件
     * @return 订单列表
     */
    List<OrderVO> queryShopOder(Page<OrderVO> page, @Param("param") ShopOrderPageQuery pageQuery);

    /**
     * 修改订单状态
     * @param orderId 订单id
     * @param code 订单状态(0:创建, 1:待接单, 2:备餐中, 3:配送中,4:已完成, 5:已取消)
     */
    void changeStatus(@Param("orderId") Long orderId, @Param("status") Integer code);

    /**
     * 根据订单id查询订单详情
     * @param orderId 订单id
     * @return 订单详情
     */
    OrderVO queryDetailById(Long orderId);

    /**
     * 根据订单id查询订单商品信息
     * @param orderIds 订单id
     * @return 订单商品信息
     */
    List<OrderItemVO> queryItemByOrderIds(@Param("list") List<Long> orderIds);

    List<OrderDashboardVO> queryOrderDashboard(Long shopId);
}
